package oop;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

/**
 *
 * Lớp Player ( Người chơi) lắng nghe sự kiện từ bàn phím
 */
public class Player extends Entity implements KeyListener {

    private static String name;
    int turn = 0;  // lượt, nhằm giảm tốc
    private boolean control[] = {false, false, false, false, false}; //{len,trai,xuong,phai,tan cong}

    public Player(int x, int y, String path) {
        super(x, y, path);
    }

    public static void setName(String name) {
        Player.name = name;
    }

    public static String getName() {
        return name;
    }

    /**
     * Lên hạng
     *
     * @deprecated chưa dùng
     */
    public void upLevel() {

    }

    /**
     * Kiểm tra sự va cham đạn với bot Hạn chế lượt đánh theo tốc độ
     *
     * @param bot
     */
    public void control(Bot bot) {
        effect.checkCollison(bot);
        if (!isActive()) {
            return;
        }
        turn = (++turn) % 2;
        if (turn % 2 == 0) {
            return;
        }

        for (int i = 0; i < 4; i++) {
            if (control[i]) {
                changeDirection(i);
                refresh();
            }
        }
        if (control[4]) {
            attack(bot);
        }

    }

    /**
     * Kiểm tra có sự bấm phím
     *
     * @param e : KeyEvent
     */
    @Override
    public void keyPressed(KeyEvent e) {
        int keyCode = e.getKeyCode();
        
        if (keyCode == KeyEvent.VK_UP) {     // Phím hướng lên
            control[0] = true;
        }
        if (keyCode == KeyEvent.VK_RIGHT) {
            control[1] = true;
        }
        if (keyCode == KeyEvent.VK_DOWN) {
            control[2] = true;
        }
        if (keyCode == KeyEvent.VK_LEFT) {
            control[3] = true;
        }
        if (keyCode == KeyEvent.VK_SPACE) { // Tấn công
            control[4] = true;
        }
    }

    /**
     * Kiểm tra sự nhả phím
     *
     * @param e
     */
    @Override
    public void keyReleased(KeyEvent e) {
        int keyCode = e.getKeyCode();

        if (keyCode == KeyEvent.VK_UP) {    // Phím hướng lên
            control[0] = false;
        }
        if (keyCode == KeyEvent.VK_RIGHT) {
            control[1] = false;
        }
        if (keyCode == KeyEvent.VK_DOWN) {
            control[2] = false;
        }
        if (keyCode == KeyEvent.VK_LEFT) {
            control[3] = false;
        }
        if (keyCode == KeyEvent.VK_SPACE) {
            control[4] = false;
        }
    }

    @Override
    public void keyTyped(KeyEvent e) {
    }

}
